<?php
declare (strict_types = 1);

namespace app\controller;

use tests\thinkphp\library\think\viewTest;

class Goods
{
    /**
     * @return \think\response\View
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     * 将数据从商品表中查询出来
     */
    public function goodsList(){
//        首先判断缓存中是否有数据
        if(!empty(cache('goodsData'))){
//        将值传到视图层进行操作
            return view('index/list',['goodsData'=>cache('goodsData')]);
        }
//        查询商品表中的所有数据
        $goodsData=(new \app\model\Goods())->goodsList();
//        将数据存到缓存中
        cache('goodsData',$goodsData);
//        将值传到视图层进行操作
        return view('index/list',['goodsData'=>$goodsData]);
    }


    /**
     * @param string $id
     * @return string|\think\response\View
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     * 根据商品id查询商品详情
     */
    public function goodsInfo($id=''){
//        判断id是否有误
        if(!is_numeric($id)||$id==0){
            return '参数有误';
        }
//        判断缓存中是否有值
        if(!empty(cache('goodsInfo'.$id))){
//        将值传递到视图层
            return view('index/item',['goodsInfo'=>cache('goodsInfo'.$id)]);
        }
//        根据id查询商品详情
        $goodsInfo=(new \app\model\Goods())->goodsInfo($id);
//        将值存储到缓存中
        cache('goodsInfo'.$id,$goodsInfo);
//        将值传递到视图层
        return view('index/item',['goodsInfo'=>$goodsInfo]);
    }
}
